// 封装了axios所有操作
// 1.create方法实例化，2.请求拦截器，3.响应拦截器

import axios from 'axios'
// 引入store中的token
import store from '@/store'
// 引入router
import router from '@/router'
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  // 接口超长时间
  timeout: 5000
})

// 请求拦截器，统一封装token
service.interceptors.request.use(
  config => {
    // console.log(config)
    config.headers.Authorization = `Bearer ${store.getters.token}`
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

service.interceptors.response.use(
  response => {
    const { data, message, success } = response.data
    if (success) {
      return data
    } else {
      return Promise.reject(new Error(message))
    }
  },
  error => {
    if (error.response && error.response.status === 401) {
      // 清空数据
      store.commit('user/removeData')
      // 跳转首页
      router.push('/login')
    }
    // console.log(error.response, error.response.status)
    return Promise.reject(error)
  }
)

export default service

// 通过create方法创建的新实例，相当于增强版本的直接导入的axios （增加一些自定义的配置）
// 请求拦截器和响应拦截器可以多次进行拦截
